package com.study.bigdata.spark.core.rdd.instance

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Scala01_RDD_Instance_Memory_Partition{
  def main(args: Array[String]): Unit = {

    // 默认：[*]当前取机器的最大核数：8 所以分区数也是8
    val conf = new SparkConf().setMaster("local[*]").setAppName("WordCount")
    // 此时配置大于环境默认 分区数为：4
    conf.set("spark.default.parallelism","4")
    val sc = new SparkContext(conf)
    // TODO 从内存中创建RDD - 分区

    // 1.如果构建RDD时没有指定数据处理分区的数量，那么就会使用默认分区数量
    // 此时编码大于配置 分区数：2
    // 可见从上到下分区数的优先级逐渐变大，原则：默认<配置<编码
    val rdd1: RDD[Int] = sc.makeRDD(
      Seq(1, 2, 3, 4,5),3
    )
    // saveAsTextFile方法可以生成分区文件
    rdd1.saveAsTextFile("output")

    // spark的分区策略：范围
    // (1,2,3,4)   2    [1,2]  [3,4]
    // (1,2,3,4,5) 3  [1]  [2,3] [4,5]
    sc.stop()

  }

}
